package com.wish233.wiliwiliuser.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wish233.wiliwiliapi.domain.dto.UserDTO;
import com.wish233.wiliwiliuser.domain.dto.UserQueryRequest;
import com.wish233.wiliwiliuser.domain.dto.UserUpdateRequest;
import com.wish233.wiliwiliuser.domain.po.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wish233.wiliwiliuser.domain.vo.UserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author WHH
 * @description 针对表【user(用户表)】的数据库操作Service
 * @createDate 2025-02-26 14:22:45
 */
public interface UserService extends IService<User> {

    UserVO userLogin(String userAccount, String userPassword, HttpServletRequest request);

    long userRegister(String username, String password, String checkPassword);

    Boolean userSign();

    UserVO getUserById(Long id);

    boolean updateUser(UserUpdateRequest userUpdateRequest);

    boolean deleteUser(Long id);

    QueryWrapper<User> getQueryWrapper(UserQueryRequest userQueryRequest);

    UserDTO getUserDTOById(Long id);

    Map<Long, UserDTO> getUserByIdBatch(Set<Long> userIds);

    List<UserDTO> getUserByIdBatchSorted(Set<Long> userIds);
}
